#ifndef BANK_UIMANAGER_HH
#define BANK_UIMANAGER_HH

#include <string>
#include "AuthManager.hh"

enum class Language {
    CHINESE,
    ENGLISH,
    FRENCH
};

class UIManager {
private:
    Language currentLanguage;
    AuthManager& authManager;

public:
    UIManager(AuthManager& auth, Language defaultLanguage = Language::CHINESE);

    // 本地化文本获取
    std::string getLocalizedText(const std::string& key) const;

    // 语言设置
    void setLanguage(Language lang);
    Language getCurrentLanguage() const;

    // 主菜单和设置菜单
    void showSettingsMenu();
    void showMainMenu();

    // 根据用户角色显示相应的菜单
    void showCustomerMenu();
    void showEmployeeMenu();
    void showAdminMenu();
    void showAuditorMenu();

    // 账户操作菜单
    void showCustomerAccountsMenu(const std::string& customerName);
    void showAccountMenu(const std::string& accountId);

    // 交易操作菜单
    void showDepositMenu(const std::string& accountId);
    void showWithdrawMenu(const std::string& accountId);
    void showTransferMenu(const std::string& accountId);
    void showCurrencyExchangeMenu(const std::string& accountId);

    // 报告菜单
    void showTransactionReportsMenu();

    // 辅助方法
    void displayMessage(const std::string& message) const;
    std::string getInput(const std::string& prompt) const;
    int getMenuChoice(int minOption, int maxOption) const;
    
    // 新增：使用按键选择菜单选项
    char getKeyChoice(const std::string& validKeys) const;
    
    // 新增：密码输入方法，限制为6位数字
    std::string getPassword(const std::string& prompt) const;
};

#endif // BANK_UIMANAGER_HH 